signature TYPES_STRUCTS =
sig
  include ATOMS
end

signature TYPES =
sig
  include TYPES_STRUCTS
    
  datatype btype
    = Errt
    | NS
    | Voidt
    | Intt
    | Boolt
    | Structt of Id.t * (Id.t * btype) list
    | Arrayt of Intl.t * btype 
    | Pointt of btype
    | TypeSeq of btype * btype
    | Funct of (Id.t * btype) list * btype
    
  val eq : btype * btype -> bool
  val isValidtp : btype * btype list -> bool
  val isValidrettype : btype * btype list -> bool
  val isPointertype : btype -> bool
  val getFieldtype : btype list * Id.t * Id.t -> btype
  val getArgtypes : btype -> btype list
  val getFuncrettp : btype -> btype
  val Inittypelist : unit -> btype list
end

  
 